Fractal Block World

Environment Variables


This documentation was created for the following version of the program: 0.92.0
One can toggle the console (while in game) by pressing the '~' key.

Commands can be entered while in the console. For example, entering the command "exit" will cause the program to exit.

The game has "environment variables" that can be accessed through the console. The "get" command prints the value of the specified environment variable.

The "ls" command lists all variables that start with a given prefix. Note: in addition to environment variables, there are "directories" which are simply a prefix of an environment variable name that ends with a period. The ls command lists variables and directories with the given prefix.

Variables can be changed using the "set" command, assuming you have access to do so. Note that all access is granted by enabling cheat codes.

Environment variables are important because you can set them in the "program_startup" script that is run when the program starts up. You can use this for advanced customization.

This document contains a dump of all environment variables.

This document was created by running the program and calling the "gendoc" console command.

Green entries represent directories, whereas grey ones represent individual environment variables. Some variables or directories are documented with blue text.


console (dir)
You can open the console in game by pressing "~". These vars describe the behavior of the console. They mostly regard the look and feel of it.

console.calc_num_cols (int)
This is a read only variable. It represents the max number of characters that can be in any line of the console window. This is determined from console.num_lines (which determines the height of each line) and console.char_hw_ratio. Also, the value must be less than or equal to console.max_cols.

console.char_hw_ratio (float)
The height to width ratio of any character. Note: the screen has width 1.0 and height 1.0.

console.cwd (string)
This var is not being used.

console.height (float)
The fraction of the screen the console takes up when open. So a value of 1.0 means it takes up the entine screen. Note that the height of each line is console.height / console.num_lines.

console.in (bool)
Whether or not the console is open.

console.max_cols (int)
The value of console.calc_num_cols will always be forced to be less thank or equal to console.max_cols.

console.num_lines (int)
The number of console lines displayed on the screen at any one time.

console.prmt (string)
The string displayed on the left of the line that the user is currently typing into. By default this is "$ ".

console.type_repeat_delay (float)
When the user holds down a key in the console, this is how long it takes before the character will be entered repeatedly.

console.type_repeat_speed (float)
After the user holds down a key in the console for a sufficiently long amount of time, this is how many times the character is entered per second.

console.style (dir)

console.style.back_alpha (float)
The alpha of the background of the console window.

console.style.back_color (vector)
The background color of the console window.

console.style.text_color (vector)
The (default) text color in the console window.

console.style.colored_text (dir)

console.style.colored_text.basic (dir)
The most basic way to color text displayed by the console is with the basic escape sequence ^N where N is between 0 and 7 inclusive. For example, by default "^1stop" will display the word "stop" in red. Which basic escape sequences correspond to what colors can be specified here. So if console.style.colored_text.basic.1 is set to (0.0, 1.0, 0.0), then "^1stop" will display the word "stop" in green. Note that a more advanced way to use colors is with the escape sequence ^xrrggbb, a sequence of 6 hex characters (lowercase).

console.style.colored_text.basic.0 (vector)

console.style.colored_text.basic.1 (vector)

console.style.colored_text.basic.2 (vector)

console.style.colored_text.basic.3 (vector)

console.style.colored_text.basic.4 (vector)

console.style.colored_text.basic.5 (vector)

console.style.colored_text.basic.6 (vector)

console.style.colored_text.basic.7 (vector)

debug (dir)

debug.bomb (bool)
Every so often, the program checks this var. If it is true, the program will exit. To exit the program immediately, use the exit command.

debug.charlie (bool)
Do not modify this var. This is used sometimes by the engine for debugging.

display (dir)

display.camera_params (dir)

display.camera_params.vfov (float)
This is the "vertical field of view" of the game's camera.

display.camera_params.a_ratio (dir)

display.camera_params.a_ratio.use_screen_resolution (bool)
If this is set to true, then the variable display.camera_params.a_ratio.value will be set to the screen width divided by the screen height.

display.camera_params.a_ratio.value (float)
Let the aratio be the value of this var. Let vfov be the value of display.camera_params.vfov. The hfov (horizontal field of view) is set to vfov * aratio. The world is rendered using the vfov and the hfov.

display.hud (dir)

display.hud.hide_all_huds (bool)
When this is true, the system hud (on the upper half of the screen) is not rendered, and the package defined hud windows (on the lower half of the screen) are not rendered (or updated) either. This is intended for taking a screenshot of the world.

display.hud.show_dir (bool)
Normally, when the viewer turns towards one of the 6 cardinal directions, either "UP", "DOWN", "LEFT", "RIGHT", "FRONT", or "BACK" will be displayed. However when this var is set to false, the displaying of this text is disabled.

display.hud.show_loading_graph_in_menus (bool)
Even when the player is in a menu (even the main menu), the "exploration" process continues. This is the process of creating and destroying chunks. When this var is set to true, a graph showing the progress of this process is displayed in the main menu.

display.hud.attack_display (dir)
The attack display shows colored circles in the center of the screen when the player is hit by enemy attacks. The location of the circle depends on where the attack came from. The size of the circle represents the damage done by the attack.

display.hud.attack_display.90_deg_radius (float)
The distance from the center of the screen attack circles are displayed which come from attacks that are 90 degrees from where the player is looking.

display.hud.attack_display.color (vector)
The color of the attack circles.

display.hud.attack_display.dot_radius (float)
The radius of an attack circle is proportial to this var times the damage done by the attack.

display.hud.attack_display.enable (bool)
This var represents whether or not the attack display should be shown.

display.hud.attack_display.keep_time (float)
How many seconds an attack circle stays on the screen, before it turns invisible and disappears.

display.hud.attack_display.screen_x_stretch (float)
The factor by which to stretch the entire attack display in the x direction. Note: the screen is 1.0 wide, and 1.0 high.

display.hud.crosshair (dir)
The crosshair texture is called "crosshair". So, you can change the crosshair texture by changing the file associated to the "crosshair" texture name in "Data/PACKAGE/Textures/texture_names.txt".

display.hud.crosshair.color (vector)
The color to shade the crosshair texture.

display.hud.crosshair.hide (bool)
If true, the crosshair will not be shown.

display.hud.crosshair.scale (float)
The size of the crosshair, in the y direction.

display.hud.crosshair.x_scale (float)
The size of the crosshair in the x direction is this var times display.hud.crosshair.scale.

display.hud.msg (dir)
The "hud message" is what shows up in the center of the screen, above the crosshairs, to display a message to the user. There can only be one hud message at a time, and the last hud message only lasts for a certain amount of time.

display.hud.msg.back_alpha (float)
The alpha of the background behind the hud message.

display.hud.msg.back_color (vector)
The color of the background behind the hud message.

display.hud.msg.color (vector)
The color of the text of the hud message.

display.hud.side_displays (dir)
On the upper left and upper right of the screen there are displays showing things like frame rate or what level the player is on. These are called "side displays". There are several vars associated to each side display. One var determines if the side display should be shown. Another var determines if the side display should be on the left vs the right side of the screen. The "priority" var determines the order the display is shown. The lower the priority number, the closer to the top of the screen the display appears.

display.hud.side_displays.fps (dir)

display.hud.side_displays.fps.left_side (bool)

display.hud.side_displays.fps.priority (int)

display.hud.side_displays.fps.show (bool)

display.hud.side_displays.fps_graph (dir)

display.hud.side_displays.fps_graph.left_side (bool)

display.hud.side_displays.fps_graph.priority (int)

display.hud.side_displays.fps_graph.show (bool)

display.hud.side_displays.level (dir)

display.hud.side_displays.level.left_side (bool)

display.hud.side_displays.level.priority (int)

display.hud.side_displays.level.show (bool)

display.hud.side_displays.loading_graph (dir)

display.hud.side_displays.loading_graph.left_side (bool)

display.hud.side_displays.loading_graph.priority (int)

display.hud.side_displays.loading_graph.show (bool)

display.screen (dir)

display.screen.actual_height (int)
This is a read only var. It is the height of the screen in pixels.

display.screen.actual_width (int)
This is a read only var. It is the width of the screen in pixels.

display.screen.always_use_desktop_res (bool)
If true, then the desktop resolution will be used for setting the vars display.screen.actual_height and display.screen.actual_width. If false, the vars display.screen.height and display.screen.width will be used instead.

display.screen.height (int)
This is like display.screen.width, but for the height instead.

display.screen.width (int)
The requested screen width in pixels. The program will try using this width, unless display.screen.always_use_desktop_res is true.

engine (dir)

engine.constant_saving (bool)
If either of the vars engine.constant_saving or game.constant_saving are true, then the game will be saved every few seconds automatically.

engine.exit_on_error (bool)
Some program errors will not cause the program to exit. However if this var is true, then when the program encounters many of thes errors it will exit explicitly.

engine.version (string)
The version of the program. An example would be "0.92.0".

engine.bents (dir)

engine.bents.disable_rendering (bool)
When true, the engine will NOT render basic entities.

engine.chunks (dir)

engine.chunks.show_chunk_lines (bool)
If true, then around each chunk in the active chunk tree will be drawn a wireframe cube.

engine.chunks.show_proto_chunks (bool)
When a chunk is first added to the chunk tree, it is an empty shell: a proto chunk. Only later is it populated. If this var is set to true, then instead of rendering a solid proto chunk normally, it is rendered using a special texture to show that it is a proto chunk.

engine.cutting (dir)

engine.cutting.enabled (bool)
Currently, this engine is not doing any "cutting".

engine.exploration (dir)

engine.exploration.disable (bool)
Exploration is the process of adding and removing chunks from the active chunk tree as the user moves through the world. When this var is true, the engine will NOT perform exploration.

engine.exploration.tethered (bool)
Normally when the user moves from one chunk to the next, all chunks on that level shift so that the following is always true: the chunk that contains the center point of the player is the central chunk for that level. However when this var is set to false, this shifting does NOT occur.

engine.exploration.level_radii (dir)
The radius of the viewer level is "engine.exploration.level_radii.0". The radius of viewer level - 1 is "engine.exploration.level_radii.1", etc. The default values for these are 3,3,2,1,0,0,0,0,0...The radius of a level specifies how far away from the viewer that chunks can be created and maintained.

engine.exploration.level_radii.0 (int)

engine.exploration.level_radii.1 (int)

engine.exploration.level_radii.2 (int)

engine.exploration.level_radii.3 (int)

engine.exploration.level_radii.4 (int)

engine.exploration.level_radii.5 (int)

engine.exploration.level_radii.6 (int)

engine.exploration.level_radii.7 (int)

engine.exploration.level_radii.8 (int)

engine.exploration.level_radii.9 (int)

engine.ments (dir)

engine.ments.disable_rendering (bool)
When true, the engine will NOT render moving entities.

engine.ments.disable_updates (bool)
When true, the engine will NOT perform any update functions on moving entities.

engine.particles (dir)

engine.particles.disable (bool)
When true, particle effects will not be rendered, and partices will not be updated.

engine.particles.sort_period (float)
Every so often, particles are sorted by their distance to the player. This var specifies how many seconds between these sortings.

engine.particles.throttle (dir)
Once there are too many particles in the world, whenever a new particle is requested to be created, it will only actually be created with a small probability P. Let V = "engine.particles.trottle". If the number of particles is between V.1.num and V.2.num, the probability P is V.1.frac. If the number of particles is between V.2.num and V.3.num, the probability P is V.2.frac. Finally, if the number of particles is over V.3.num, the probability P is V.3.frac.

engine.particles.throttle.1 (dir)

engine.particles.throttle.1.frac (float)

engine.particles.throttle.1.num (int)

engine.particles.throttle.2 (dir)

engine.particles.throttle.2.frac (float)

engine.particles.throttle.2.num (int)

engine.particles.throttle.3 (dir)

engine.particles.throttle.3.frac (float)

engine.particles.throttle.3.num (int)

engine.rayalg (dir)

engine.rayalg.disable (bool)
The ray algorithm is what is used when an entity is moved through the world and we need to find what it collides with.When this var is true, the engine disables this algorithm (so no collisions are detected).

engine.render (dir)

engine.render.disable_world (bool)
When true, the engine will NOT render the world, including all entities inside the world.

engine.render.handle_visray_false (string)
This specifies what should happen to chunks that DO intersect the view frustrum but ARE NOT render relevaent. If this var is set to "cocoon_render", then the block that occupies the same space as the chunk is rendered. This looks fine and is pretty fast. This should be the typical setting, and often the chunk is a proto chunk anyway so no rendering detail is lost. If this var is set to "full_render", then the chunk is rendered fully. This is very slow. If this var is set to "no_render", then the chunk is not rendered at all (not even as a block). This looks aweful, but is fast.

engine.render.rr (dir)
rr stands for "render relevant". Let X = the value of engine.render.rr.created_time. Let Y = the value of engine.render.rr.visray_hit_interval. A chunk is render relevant iff either it has been created (added to the chunk tree) within the last X seconds, or it has been hit by a visray within the last Y seconds.

engine.render.rr.created_time (float)
3.0 is a good value for this.

engine.render.rr.visray_hit_time (float)
10.0 is a good value for this.

engine.surfaces (dir)

engine.surfaces.show_quad_algorithm (bool)
The "quad algorithm" is what I am calling the algorithm I invented when working on Infinifrag 2 to greedily merge surface m by n quads together for rendering a block world. When this var is true, these individual quads are shown (before a vertex buffer object for the chunk is created).

engine.textures (dir)
Textures are loaded lazily in this program. That is, when a texture is needed, we either loaded it then and there (synchronously) or we load it asyncronously. When a texture is loaded asyncronously, then until we have the texture, we either use in place of it a black texture or a goofy pretty texture.

engine.textures.async (bool)
Whether or not textures should be loaded synchronously or asyncronously.

engine.textures.delete_time (float)
If a texture has been loaded but has not been used for this amount of time, then we delete it from memory. It can always be reloaded later if needed.

engine.textures.pixel_load_per_frame (int)
How many pixels can be loaded synchronously in a frame before we must load the remaining textures asyncronously.

engine.textures.use_not_loaded_pretty_tex (bool)
Whether or not we should use a goofy pretty texture, instead of a black texture, while we are waiting to load a texture asyncronously.

engine.visray (dir)
Every second, many visibility rays (visrays) are shot from the player's location. The purpose is to try to determine what chunks are visible from the player's position. Only chunks hit by a visray within the recent past are rendered, or updateded.

engine.visray.enabled (bool)
If fase, then no visrays are shot out and no system in the engine excepts visrays to hit chunks.

engine.visray.rays_per_sec (int)
The number of visrays shot from the player's position per second. Although visrays are shot in all directions, more are focused towards the direction where the player is looking.

engine.visray.update_interval (float)
After each time a chunk is hit by a visray, we will preform update functions for the chunk (for ments, particles, etc) for at least engine.visray.update_interval many seconds.

game (dir)
When a game is loaded, variables will be added here. When a game is closed, these variables will be removed. There are a few exceptions: a few variables need to exist here even if there is no game loaded. One such var is game.state.world_loaded. Another is game.version_error.1.forced_prefered_engine_ver.

game.constant_saving (bool)

game.globals (dir)
These are vars created by the package, as opposed to "system" game vars.

game.globals.blank (dir)

game.globals.blank.messages (dir)

game.globals.blank.messages.slot1 (dir)

game.globals.blank.messages.slot1.msg (string)

game.globals.blank.messages.slot1.ttl (float)

game.globals.blank.messages.slot2 (dir)

game.globals.blank.messages.slot2.msg (string)

game.globals.blank.messages.slot2.ttl (float)

game.globals.blank.messages.slot3 (dir)

game.globals.blank.messages.slot3.msg (string)

game.globals.blank.messages.slot3.ttl (float)

game.globals.blank.messages.slot4 (dir)

game.globals.blank.messages.slot4.msg (string)

game.globals.blank.messages.slot4.ttl (float)

game.globals.blank.messages.slot5 (dir)

game.globals.blank.messages.slot5.msg (string)

game.globals.blank.messages.slot5.ttl (float)

game.globals.blank.movement (dir)

game.globals.blank.movement.back (bool)

game.globals.blank.movement.brake (bool)

game.globals.blank.movement.down (bool)

game.globals.blank.movement.extra_impulse (vector)

game.globals.blank.movement.forward (bool)

game.globals.blank.movement.left (bool)

game.globals.blank.movement.right (bool)

game.globals.blank.movement.rocket (bool)

game.globals.blank.movement.rocket_mode (bool)

game.globals.blank.movement.spin_ccw (bool)

game.globals.blank.movement.spin_cw (bool)

game.globals.blank.movement.spin_value (float)

game.globals.blank.movement.up (bool)

game.input (dir)
These vars may eventually be moved to metagame.input.

game.input.last_input_time (float)
The last time there was any keyboard or mouse button input.

game.input.mouse (dir)

game.input.mouse.wheel_value (int)

game.package (dir)
When a new game is created, these vars are read in from the starting configuration file. Then, for the rest of the process of creating a new game, these vars are used.

game.package.config_desc (string)
A description of the initial configuration.

game.package.genesis (bool)
Whether or not the engine should use genesis mode. Note: there is a hard coded variable that can override this to make the program genesis only.

game.package.name (string)
The name of the package being used.

game.package.seed (int)
The seed used to generate the world. Note: the starting configuration file can specify that the user can pick their own seed when creating a new game.

game.package.starting_pos_file (string)
The name of the starting configuration file used.

game.package.world_nodes (dir)

game.package.world_nodes.root_name (string)
The name of the chunk file (without the .lua at the end) to be used for the root of the chunk tree. Note: the value __FBW_DEFAULT__ can be used here, in which case the C++ hardcoded Xar world root will be used.

game.player (dir)

game.player.alive (bool)
This variable may eventually be removed.

game.player.health_max (int)
Right now this is needed for the attack display, but that may eventually change.

game.player.level (int)
The level the player is on. 0 means the root of the chunk tree.

game.player.name (string)
The name of the player.We must be able to create a directory of this name.

game.player.path (string)
The path of the player from the root of the chunk tree. EMPTY_PATH means it is the path of length zero.Otherwise, this var should be something like 4a7_e39.

game.player.camera (dir)

game.player.camera.left (vector)
The direction pointing 90 degrees from where the player is looking, towards the left hand side of the screen.

game.player.camera.look (vector)
Where direction where the player is looking. This vector, along with left and up, should have length one.

game.player.camera.offset (vector)
The position of the player within the center chunk on the level of the player. The x,y,z components of this vector should always be between 0.0 and 16.0. Because the player is in the center chunk for his level, this offset var is also the level coordinates of the player.

game.player.camera.up (vector)
The direction pointing 90 degrees from where the player is looking, towards the top of the screen.

game.player.camera.3rdp (dir)

game.player.camera.3rdp.enabled (bool)
If this is true, then instead of looking at the world from the player's perspective, we instead look at the player from slightly behind him. This is intended for games with gravity.

game.player.model (dir)
If 3rd person mode is enabled, these vars specifiy the Quake 2 character model used for the player's body. You must specify the md2 file itself (for the mesh and the animation frames) as well as the single texture associated to the mesh.

game.player.model.q2md2 (dir)

game.player.model.q2md2.md2 (string)
The name of the md2 file to use for the player. For example, "Input/Q2MD2_Models/MODEL_NAME/MODEL_NAME.md2".

game.player.model.q2md2.tex (string)
The name of the jpg file to use for the player. For example, "Input/Q2MD2_Models/MODEL_NAME/MODEL_NAME.jpg".

game.player.move (dir)

game.player.move.last_pos_diff (vector)
The game is updated 25 times per second. This var represents the difference in the player's position between the last two updates. This can be used for package defined lua scripts to create momentum.

game.player.move.mode (string)
This can be either "fly" or "ground". This determines how collision detection works with the player. In fly mode, the player is modeled using a sphere. In ground mode, the player is modeled using a cylinder.

game.player.move.fly (dir)

game.player.move.fly.radius (float)
In fly mode, the player is modeled using a sphere. This is the radius of that sphere.

game.player.move.fly.use_true_up (bool)
When set true, the direction from the center of the screen to the top of the screen will always point towards the positive z direction. Said another way, the "game.player.camera.left" vector will always be in the XY plane. This only has effect if the movement mode is "fly".

game.player.move.ground (dir)
When the move mode is "ground", the player is modeled as a cylinder, pointed in the Z direction.

game.player.move.ground.bot_to_eye (float)
This is the distance from the bottom of the player cylinder to the eyes of the player. The eyes are the center of the player.

game.player.move.ground.eye_to_top (float)
This is the distance from the eyes of the player to the top of the player cylinder.

game.player.move.ground.radius (float)
This var is the radius of the player cylinder.

game.player.respawn (dir)

game.player.respawn.path (string)
The chunk path of the chunk were the player will be respawned.

game.player.respawn.valid (bool)
This specifies whether there is a valid respawn location. If false, the player cannot be respawned.

game.player.respawn.pos (dir)
The block position, within the respawn chunk, where the player should be respawned. Note: this is be changed to a single var!

game.player.respawn.pos.x (int)

game.player.respawn.pos.y (int)

game.player.respawn.pos.z (int)

game.player.waypoint (dir)

game.player.waypoint.temp (string)
The chunk path of the temp waypoint, if a temp waypoint is being used.

game.requests (dir)
Some actions do not happen immediately, but are instead requested to happen later in the frame when it is appropriate.

game.requests.ascend (bool)
If there is a request to grow.

game.requests.blue_tele (bool)
If there is a request to use blue rings.

game.requests.close (bool)
If there is a request to close the current game (but not exit the program).

game.requests.descend (bool)
If there is a request to shrink.

game.requests.new_offset (vector)
The new offset of the player, in whatever new chunk the player will be in.

game.requests.pink_tele (bool)
If there is a request to use pink rings.

game.requests.sloppy_waypoint_tele (bool)
If there is a request to use a waypoint teleporter, where only the target chunk is specified, not the position within the target chunk.

game.requests.waypoint_tele (bool)
If there is a request to use a waypoint teleporter. The target chunk path is stored elsewhere in the program.

game.state (dir)

game.state.paused (bool)
True iff the game is paused. This will happen if the user is in a menu.

game.state.world_loaded (bool)
This is a very important var. This says whether or not a game has been loaded. In other words, this is true iff there is a current game in play.

game.state.copy_dir (dir)

game.state.copy_dir.locked (bool)
This is true iff the program is locked because a directory is being copied asyncronously.

game.state.saving (dir)

game.state.saving.locked (bool)
This is true iff the program is locked because a game is being saved. Saving occurs asyncronously, but it lockes the program.

game.state.saving.saved_chunks (int)
How many modified chunks have been saved so far (since the game as been saved locked).

game.state.saving.total_chunks (int)
How many total modified chunks need to be saved (while the game is save locked).

game.time (dir)

game.time.acc (float)
The game is updated 25 times per second. Call these the major updates. However the game is rendered more often. During a rendering frame, this var represents how many seconds have passed since the last major update.

game.time.elapsed (float)
The game time that has elapsed since the last update. That is, game.time.total minus game.time.last_update should equal game.time.elapsed.

game.time.last_save (float)
The game time of when the game was last saved. This is important for the option to save the game every few seconds.

game.time.last_update (float)
The game time of the last major update.

game.time.play (float)
How many seconds the player has been playing the game, since they started it as a new game. This should normally equal game.time.total, unless the player slept in the game which would advance the game.time.total time but not the game.time.play time.

game.time.rem_frac (float)
The game is updated 25 times per second. Call these the major updates. However the game is rendered more often. During a rendering frame, this var represents how far the game is from the last major update to the next major update. So 0.1 means the last major update just happend, and 0.9 means we are almost to the next major update.

game.time.total (float)
The game time. This starts at 0.0 when the player starts a new game. For every second, this advances by one. However, it can also be advanced by sleeping. So, it is not necessarily how many total seconds the player has been playing the game.

game.version_error (dir)
When we try to load a game, we may encounter an error that will terminate the loading. The errors lister here have to do with the version of the engine or the version of the package.

game.version_error.1 (dir)
When loading a game, the version of the engine may not match the prefered engine version specified in the light_params.txt file of the package.

game.version_error.1.forced_prefered_engine_ver (string)
Whether to force the loading of the game, using this var to override the prefered engine version instead of the one in "light_params.txt".

game.version_error.2 (dir)
Each save file stores the engine version and the package version used the last time the game was played. If when loading a game these do not match the actual engine or package version, that will terminate the loading.

game.version_error.2.expected_engine_ver (string)
The engine version used the last time the game was played.

game.version_error.2.expected_package_ver (string)
The package version used the last time the game was played.

home (dir)
This is a place for the user to create their own variables. This can be done with the "let" command.

home.readme (string)

menu (dir)

menu.back_alpha (float)
The background alpha of windows in the main menu.

menu.back_alpha_dark (float)
The darker background alpha of windows in the main menu. Some windows have a darker background than others.

menu.back_color (vector)
The background color of windows in the main menu.

menu.ent_press_key_prompt (bool)
Whether a message appears to use an item (that can be used) when the player has their crosshair on it. This var should probably be removed.

menu.in_load_error (bool)
Whether the user is in a menu to deal with an error from loading a game. These menus are essentially popup menus.

menu.in_main (bool)
If true, the game is paused (if there is a game loaded) and the user is in the main menu.

menu.last_player_name (string)
The player name associated to the last game that was played. This is useful because when the user loads a game, the user will probably want to select this name.

menu.render_world_behind (bool)
If true, then when in a main menu, the world will be rendered behind the menu. Note: if the framerate is too low, the world will NOT be rendered behind the menu.

menu.text_color (vector)
The color of text in the main menu.

menu.load_error (dir)
If there is an error loading a game, the user must deal with a popup menu. Some of these menus allow the user to resume the load while forcing the value of a var. To resume the load, we must store the params that were passed to the loading function.

menu.load_error.1 (dir)

menu.load_error.1.has (bool)

menu.load_error.1.override_eng_ver (string)

menu.load_error.1.type_new (bool)

menu.load_error.1.new (dir)

menu.load_error.1.new.player (string)

menu.load_error.1.new.starting_config_file (string)

menu.load_error.1.new.world_seed (int)

menu.load_error.2 (dir)

menu.load_error.2.force_expected_eng_ver (string)

menu.load_error.2.force_expected_package_ver (string)

menu.load_error.2.has (bool)

metagame (dir)
Variables that start with "game" are removed just before we load a game. However, variables that start with "metagame" are not. That is, metagame vars can last longer than one loaded game. So you can set metagame.cheat.god to true, then load a different game and it will still be true.

metagame.cheat (dir)
Some cheat codes are defined by the package, and so you can enable them, save the game, exit the program, start the program again, load the game, and the cheat code will be enabled again. Other cheat codes, such as the ones here, are system cheat codes. They are not stored when the program exits. On the other hand, they are not associated to any game. So you can set metagame.cheat.god to true, load a different game, than godmode will still be on.

metagame.cheat.enabled (bool)

metagame.cheat.god (bool)

metagame.cheat.noclip (bool)

metagame.cheat.shrink_any (bool)

metagame.input (dir)

metagame.input.binds (dir)
There are input events, and then there are input actions. Input events are bound to input actions. For example, metagame.input.binds.input.6.down may be set to CUSTOM_03.

metagame.input.binds.actions (dir)
There are two kinds of input actions: custom and package. Custom input actions are specified here. When an action is executed, the string will be executed as a console command. Package input actions, on the other hand, are defined by the packge in the binds.txt file. All package input actions should start with "PACKAGE".

metagame.input.binds.actions.CUSTOM_01 (string)

metagame.input.binds.actions.CUSTOM_02 (string)

metagame.input.binds.actions.CUSTOM_03 (string)

metagame.input.binds.actions.CUSTOM_04 (string)

metagame.input.binds.actions.CUSTOM_05 (string)

metagame.input.binds.actions.CUSTOM_06 (string)

metagame.input.binds.actions.CUSTOM_07 (string)

metagame.input.binds.actions.CUSTOM_08 (string)

metagame.input.binds.actions.CUSTOM_09 (string)

metagame.input.binds.actions.CUSTOM_10 (string)

metagame.input.binds.actions.CUSTOM_11 (string)

metagame.input.binds.actions.CUSTOM_12 (string)

metagame.input.binds.actions.CUSTOM_13 (string)

metagame.input.binds.actions.CUSTOM_14 (string)

metagame.input.binds.actions.CUSTOM_15 (string)

metagame.input.binds.actions.CUSTOM_16 (string)

metagame.input.binds.actions.CUSTOM_17 (string)

metagame.input.binds.actions.CUSTOM_18 (string)

metagame.input.binds.actions.CUSTOM_19 (string)

metagame.input.binds.actions.CUSTOM_20 (string)

metagame.input.binds.input (dir)
When a key is either pressed or released, an input action is executed. Other input events are when a mouse button is pressed or released, or the mouse weel is turned.

metagame.input.binds.input.MOUSE_WHEEL (string)

metagame.input.binds.input.0 (dir)

metagame.input.binds.input.0.down (string)

metagame.input.binds.input.0.up (string)

metagame.input.binds.input.1 (dir)

metagame.input.binds.input.1.down (string)

metagame.input.binds.input.1.up (string)

metagame.input.binds.input.2 (dir)

metagame.input.binds.input.2.down (string)

metagame.input.binds.input.2.up (string)

metagame.input.binds.input.3 (dir)

metagame.input.binds.input.3.down (string)

metagame.input.binds.input.3.up (string)

metagame.input.binds.input.4 (dir)

metagame.input.binds.input.4.down (string)

metagame.input.binds.input.4.up (string)

metagame.input.binds.input.5 (dir)

metagame.input.binds.input.5.down (string)

metagame.input.binds.input.5.up (string)

metagame.input.binds.input.6 (dir)

metagame.input.binds.input.6.down (string)

metagame.input.binds.input.6.up (string)

metagame.input.binds.input.7 (dir)

metagame.input.binds.input.7.down (string)

metagame.input.binds.input.7.up (string)

metagame.input.binds.input.8 (dir)

metagame.input.binds.input.8.down (string)

metagame.input.binds.input.8.up (string)

metagame.input.binds.input.9 (dir)

metagame.input.binds.input.9.down (string)

metagame.input.binds.input.9.up (string)

metagame.input.binds.input.A (dir)

metagame.input.binds.input.A.down (string)

metagame.input.binds.input.A.up (string)

metagame.input.binds.input.B (dir)

metagame.input.binds.input.B.down (string)

metagame.input.binds.input.B.up (string)

metagame.input.binds.input.BACKSLASH (dir)

metagame.input.binds.input.BACKSLASH.down (string)

metagame.input.binds.input.BACKSLASH.up (string)

metagame.input.binds.input.BACKSPACE (dir)

metagame.input.binds.input.BACKSPACE.down (string)

metagame.input.binds.input.BACKSPACE.up (string)

metagame.input.binds.input.C (dir)

metagame.input.binds.input.C.down (string)

metagame.input.binds.input.C.up (string)

metagame.input.binds.input.D (dir)

metagame.input.binds.input.D.down (string)

metagame.input.binds.input.D.up (string)

metagame.input.binds.input.E (dir)

metagame.input.binds.input.E.down (string)

metagame.input.binds.input.E.up (string)

metagame.input.binds.input.ENTER (dir)

metagame.input.binds.input.ENTER.down (string)

metagame.input.binds.input.ENTER.up (string)

metagame.input.binds.input.ESC (dir)

metagame.input.binds.input.ESC.down (string)

metagame.input.binds.input.ESC.up (string)

metagame.input.binds.input.F (dir)

metagame.input.binds.input.F.down (string)

metagame.input.binds.input.F.up (string)

metagame.input.binds.input.F1 (dir)

metagame.input.binds.input.F1.down (string)

metagame.input.binds.input.F1.up (string)

metagame.input.binds.input.F10 (dir)

metagame.input.binds.input.F10.down (string)

metagame.input.binds.input.F10.up (string)

metagame.input.binds.input.F11 (dir)

metagame.input.binds.input.F11.down (string)

metagame.input.binds.input.F11.up (string)

metagame.input.binds.input.F12 (dir)

metagame.input.binds.input.F12.down (string)

metagame.input.binds.input.F12.up (string)

metagame.input.binds.input.F2 (dir)

metagame.input.binds.input.F2.down (string)

metagame.input.binds.input.F2.up (string)

metagame.input.binds.input.F3 (dir)

metagame.input.binds.input.F3.down (string)

metagame.input.binds.input.F3.up (string)

metagame.input.binds.input.F4 (dir)

metagame.input.binds.input.F4.down (string)

metagame.input.binds.input.F4.up (string)

metagame.input.binds.input.F5 (dir)

metagame.input.binds.input.F5.down (string)

metagame.input.binds.input.F5.up (string)

metagame.input.binds.input.F6 (dir)

metagame.input.binds.input.F6.down (string)

metagame.input.binds.input.F6.up (string)

metagame.input.binds.input.F7 (dir)

metagame.input.binds.input.F7.down (string)

metagame.input.binds.input.F7.up (string)

metagame.input.binds.input.F8 (dir)

metagame.input.binds.input.F8.down (string)

metagame.input.binds.input.F8.up (string)

metagame.input.binds.input.F9 (dir)

metagame.input.binds.input.F9.down (string)

metagame.input.binds.input.F9.up (string)

metagame.input.binds.input.G (dir)

metagame.input.binds.input.G.down (string)

metagame.input.binds.input.G.up (string)

metagame.input.binds.input.GRAVE (dir)

metagame.input.binds.input.GRAVE.down (string)

metagame.input.binds.input.GRAVE.up (string)

metagame.input.binds.input.H (dir)

metagame.input.binds.input.H.down (string)

metagame.input.binds.input.H.up (string)

metagame.input.binds.input.I (dir)

metagame.input.binds.input.I.down (string)

metagame.input.binds.input.I.up (string)

metagame.input.binds.input.J (dir)

metagame.input.binds.input.J.down (string)

metagame.input.binds.input.J.up (string)

metagame.input.binds.input.K (dir)

metagame.input.binds.input.K.down (string)

metagame.input.binds.input.K.up (string)

metagame.input.binds.input.L (dir)

metagame.input.binds.input.L.down (string)

metagame.input.binds.input.L.up (string)

metagame.input.binds.input.LCTRL (dir)

metagame.input.binds.input.LCTRL.down (string)

metagame.input.binds.input.LCTRL.up (string)

metagame.input.binds.input.LSHIFT (dir)

metagame.input.binds.input.LSHIFT.down (string)

metagame.input.binds.input.LSHIFT.up (string)

metagame.input.binds.input.M (dir)

metagame.input.binds.input.M.down (string)

metagame.input.binds.input.M.up (string)

metagame.input.binds.input.MOUSE1 (dir)

metagame.input.binds.input.MOUSE1.down (string)

metagame.input.binds.input.MOUSE1.up (string)

metagame.input.binds.input.MOUSE2 (dir)

metagame.input.binds.input.MOUSE2.down (string)

metagame.input.binds.input.MOUSE2.up (string)

metagame.input.binds.input.N (dir)

metagame.input.binds.input.N.down (string)

metagame.input.binds.input.N.up (string)

metagame.input.binds.input.O (dir)

metagame.input.binds.input.O.down (string)

metagame.input.binds.input.O.up (string)

metagame.input.binds.input.P (dir)

metagame.input.binds.input.P.down (string)

metagame.input.binds.input.P.up (string)

metagame.input.binds.input.Q (dir)

metagame.input.binds.input.Q.down (string)

metagame.input.binds.input.Q.up (string)

metagame.input.binds.input.R (dir)

metagame.input.binds.input.R.down (string)

metagame.input.binds.input.R.up (string)

metagame.input.binds.input.S (dir)

metagame.input.binds.input.S.down (string)

metagame.input.binds.input.S.up (string)

metagame.input.binds.input.SPACE (dir)

metagame.input.binds.input.SPACE.down (string)

metagame.input.binds.input.SPACE.up (string)

metagame.input.binds.input.T (dir)

metagame.input.binds.input.T.down (string)

metagame.input.binds.input.T.up (string)

metagame.input.binds.input.TAB (dir)

metagame.input.binds.input.TAB.down (string)

metagame.input.binds.input.TAB.up (string)

metagame.input.binds.input.U (dir)

metagame.input.binds.input.U.down (string)

metagame.input.binds.input.U.up (string)

metagame.input.binds.input.V (dir)

metagame.input.binds.input.V.down (string)

metagame.input.binds.input.V.up (string)

metagame.input.binds.input.W (dir)

metagame.input.binds.input.W.down (string)

metagame.input.binds.input.W.up (string)

metagame.input.binds.input.X (dir)

metagame.input.binds.input.X.down (string)

metagame.input.binds.input.X.up (string)

metagame.input.binds.input.Y (dir)

metagame.input.binds.input.Y.down (string)

metagame.input.binds.input.Y.up (string)

metagame.input.binds.input.Z (dir)

metagame.input.binds.input.Z.down (string)

metagame.input.binds.input.Z.up (string)

metagame.input.mouse (dir)

metagame.input.mouse.sensitivity (dir)
You can adjust the mouse sensitivity for the game (turning the player's head) and also for windows where there is a cursor. These are adjusted separately. Also, the x and y components of the sensitivity are set separately.

metagame.input.mouse.sensitivity.game (dir)

metagame.input.mouse.sensitivity.game.x (float)

metagame.input.mouse.sensitivity.game.y (float)

metagame.input.mouse.sensitivity.windows (dir)

metagame.input.mouse.sensitivity.windows.x (float)

metagame.input.mouse.sensitivity.windows.y (float)

sound (dir)

sound.global_volume (float)
The sound volume. This should be between 0.0 and 1.0.

sound.rep_required_delta (float)
When two identical sounds are played very close to each other in time, the second one will not be played. This var specifies how long we have to wait after the first sound before the second can be played.

stats (dir)

stats.fps (int)
The frames per second. Specifically, this is the number of frames the occured during the last second long time period.

stats.fps_count (int)
A helper var to compute the fps. This should probably be removed.

stats.game_fps (int)
The fps the last time the game was unpaused. This is needed to determine if the world should be rendered behind the main menus.

stats.in_dps (int)
A helper var to compute last_id_dps. This should probably be removed.

stats.last_fps_time (float)
A helper var to compute the fps. This should probably be removed.

stats.last_in_dps (int)
The total damage done to the player during the last second long time period.

stats.last_loading_bars_time (float)
The loading bar graph shows using colors how many chunks should be removed from the chunk tree vs how many are good. This var represents the last time the loading bar graph was updated. This should probably be removed.

stats.last_major_stats_checkpoint (float)
Many stats vars are only updated periodically (once a second or so). This var represents the last time these vars where updated.

stats.num_blocks (int)
This is updated periodically. This is the total number of blocks in the active chunk tree. Note that in a chunk, we only store those blocks whose type are different from the default block type of that chunk.

stats.num_chunks (int)
This is updated periodically. This is the total number of chunks in the active chunk tree.

stats.num_ments (int)
This is updated periodically. This is the total number of moving entities in the active chunk tree.

stats.num_particles (int)
This is updated periodically. This is the total number of particles in the active chunk tree.

stats.num_quads (int)
This is updated periodically. This is the total number of surface quads in the active chunk tree. Note that the blocks of the world are rendered using their surface quads.

stats.pending_chunks (int)
This is the total number of chunks which we have requested to populate (that have not yet been populated). Note: populating entails creating from procedural world generation code.

time (dir)

time.current (float)
The number of seconds that have elapsed since the program started.

time.elapsed (float)
The number of seconds that have elapsed since TimeSystem::UpdateTime() was called.